function getPxValue(num) {
  return num + "px";
}
// (client|offset|scroll)*(height|width|top|left) = 12种，每个dom都有这12种属性
//style对象上也有(height|width|top|left)
function getProps(dom) {

  var screenProps = {
    //--
    ["document.body.clientHeight"]: {
      desc: "返回可视区域（包含padding）的高度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(document.body.clientHeight),
    },
    ["document.body.clientWidth"]: {
      desc: "返回可视区域（包含padding）的宽度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(document.body.clientWidth),
    },
    ["document.body.clientTop"]: {
      desc: "返回对象的offsetTop属性值和到当前窗口顶部的真实值之间的距离",
      value: getPxValue(document.body.clientTop),
    },
    ["document.body.clientLeft"]: {
      desc: "返回对象的offsetLeft属性值和到当前窗口左边的真实值之间的距离",
      value: getPxValue(document.body.clientLeft),
    },
    ["document.body.offsetHeight"]: {
      desc: "包括padding、border、水平滚动条的元素的高度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(document.body.offsetHeight),
    },
    ["document.body.offsetWidth"]: {
      desc: "包括padding、border、垂直滚动条的元素的宽度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(document.body.offsetWidth),
    },
    ["document.body.offsetTop"]: {
      desc: "当前元素顶部距离最近父元素顶部的距离,和有没有滚动条没有关系。单位px，只读元素",
      value: getPxValue(document.body.offsetTop),
    },
    ["document.body.offsetLeft"]: {
      desc: "当前元素顶部距离最近父元素左侧的距离,和有没有滚动条没有关系。单位px，只读元素",
      value: getPxValue(document.body.offsetLeft),
    },
    ["document.body.scrollHeight"]: {
      desc: "scrollHeight代表整个dom（包括当前不可见部分）的元素的高度。而可见部分的高度其实就是clientHeight， \
      也就是scrollHeight>=clientHeight恒成立。在有滚动条时讨论scrollHeight才有意义， \
      在没有滚动条时scrollHeight==clientHeight恒成立。单位px，只读元素",
      value: getPxValue(document.body.scrollHeight),
    },
    ["document.body.scrollWidth"]: {
      desc: "scrollWidth代表整个dom（包括当前不可见部分）的元素的宽度。而可见部分的宽度其实就是clientWidth， \
      也就是scrollWidth>=clientWidth恒成立。在有滚动条时讨论scrollWidth才有意义， \
      在没有滚动条时scrollWidth==clientWidth恒成立。单位px，只读元素",
      value: getPxValue(document.body.scrollWidth),
    },
    ["document.body.scrollTop"]: {
      desc: "代表在有滚动条时，滚动条向下滚动的距离也就是元素顶部被遮住部分的高度。在没有滚动条时scrollTop==0恒成立。单位px，可读可设置",
      value: getPxValue(document.body.scrollTop),
    },
    ["document.body.scrollLeft"]: {
      desc: "代表在有滚动条时，滚动条向又滚动的距离也就是元素顶部被遮住部分的宽度。在没有滚动条时scrollLeft==0恒成立。单位px，可读可设置。",
      value: getPxValue(document.body.scrollLeft),
    },
    ["document.body.style.height"]: {
      desc: "返回dom元素的宽度，只有通过style=\"width:10px;\"这样设置后才有，默认为空",
      value: document.body.style.height,
    },
    ["document.body.style.width"]: {
      desc: "返回dom元素的高度，只有通过style=\"height:10px;\"这样设置后才有，默认为空",
      value: document.body.style.width,
    },
    ["document.body.style.top"]: {
      desc: "处于定位模式下才有效的属性",
      value: document.body.style.top,
    },
    ["document.body.style.left"]: {
      desc: "处于定位模式下才有效的属性",
      value: document.body.style.left,
    },
    //---
    ["document.documentElement.clientHeight"]: {
      desc:
        "网页可见区域高高度（包含padding）",
      value: getPxValue(document.documentElement.clientHeight),
    },
    ["document.documentElement.clientWidth"]: {
      desc:
        "网页可见区域宽度（包含padding）",
      value: getPxValue(document.documentElement.clientWidth),
    },
    ["document.documentElement.clientTop"]: {
      desc: "返回对象的offsetTop属性值和到当前窗口顶部的真实值之间的距离",
      value: getPxValue(document.documentElement.clientTop),
    },
    ["document.documentElement.clientLeft"]: {
      desc: "返回对象的offsetLeft属性值和到当前窗口左边的真实值之间的距离",
      value: getPxValue(document.documentElement.clientLeft),
    },
    ["document.documentElement.offsetHeight"]: {
      desc: "包括padding、border、水平滚动条的元素的高度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(document.documentElement.offsetHeight),
    },
    ["document.documentElement.offsetWidth"]: {
      desc: "包括padding、border、垂直滚动条的元素的宽度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(document.documentElement.offsetWidth),
    },
    ["document.documentElement.offsetTop"]: {
      desc: "当前元素顶部距离最近父元素顶部的距离,和有没有滚动条没有关系。单位px，只读元素",
      value: getPxValue(document.documentElement.offsetTop),
    },
    ["document.documentElement.offsetLeft"]: {
      desc: "当前元素顶部距离最近父元素左侧的距离,和有没有滚动条没有关系。单位px，只读元素",
      value: getPxValue(document.documentElement.offsetLeft),
    },
    ["document.documentElement.scrollHeight"]: {
      desc: "html元素的高度,给html元素设置高度会影响此值",
      value: getPxValue(document.documentElement.scrollHeight),
    },
    ["document.documentElement.scrollWidth"]: {
      desc: "html元素的宽度,给html元素设置宽度会影响此值",
      value: getPxValue(document.documentElement.scrollWidth),
    },
    ["document.documentElement.scrollTop"]: {
      desc: "2",
      value: getPxValue(document.documentElement.scrollTop),
    },
    ["document.documentElement.scrollLeft"]: {
      desc: "2",
      value: getPxValue(document.documentElement.scrollLeft),
    },
    ["document.documentElement.style.height"]: {
      desc: "html元素的高度,给html元素设置高度会影响此值",
      value: document.documentElement.style.height,
    },
    ["document.documentElement.style.width"]: {
      desc: "html元素的宽度,给html元素设置宽度会影响此值",
      value: document.documentElement.style.width,
    },
    ["document.documentElement.style.top"]: {
      desc: "2",
      value: document.documentElement.style.top,
    },
    ["document.documentElement.style.left"]: {
      desc: "2",
      value: document.documentElement.style.left,
    },
    //---
    ["screen.availWidth"]: {
      desc:
        "显示浏览器的屏幕的可用宽度在 Windows 这样的操作系统中，这个可用宽度不包括分配给半永久特性（如屏幕左侧/右侧底部/顶部的任务栏）的水平空间",
      value: getPxValue(screen.availWidth),
    },
    ["screen.availHeight"]: {
      desc:
        "显示浏览器的屏幕的可用高度，在 Windows 这样的操作系统中，这个可用高度不包括分配给半永久特性（如屏幕底部/顶部的任务栏）的垂直空间",
      value: getPxValue(screen.availHeight),
    },
    ["screen.height"]: {
      desc: "显示浏览器的屏幕的高度，以像素计",
      value: getPxValue(screen.height),
    },
    ["screen.width"]: {
      desc: "显示浏览器的屏幕的宽度，以像素计",
      value: getPxValue(screen.width),
    },
    ["screen.colorDepth"]: {
      desc: "目标设备或缓冲器上的调色板的比特深度",
      value: screen.colorDepth,
    },
    ["screen.pixelDepth"]: {
      desc: "显示屏幕的颜色分辨率（比特每像素）",
      value: screen.pixelDepth,
    },
    //---
  };
  if (dom !== null && dom !== undefined) {
    screenProps["dom.clientHeight"] = {
      desc: "返回可视区域（包含padding）的高度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(dom.clientHeight),
    };
    screenProps["dom.clientWidth"] = {
      desc: "返回可视区域（包含padding）的宽度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(dom.clientWidth),
    };
    screenProps["dom.clientTop"] = {
      desc: "返回对象的offsetTop属性值和到当前窗口顶部的真实值之间的距离",
      value: getPxValue(dom.clientTop),
    };
    screenProps["dom.clientLeft"] = {
      desc: "返回对象的offsetLeft属性值和到当前窗口左边的真实值之间的距离",
      value: getPxValue(dom.clientLeft),
    };
    screenProps["dom.offsetHeight"] = {
      desc: "包括padding、border、水平滚动条的元素的高度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(dom.offsetHeight),
    };
    screenProps["dom.offsetWidth"] = {
      desc: "包括padding、border、垂直滚动条的元素的宽度。对于inline的元素这个属性一直是0，单位px，只读元素",
      value: getPxValue(dom.offsetWidth),
    };
    screenProps["dom.offsetTop"] = {
      desc: "当前元素顶部距离最近父元素顶部的距离,和有没有滚动条没有关系。单位px，只读元素",
      value: getPxValue(dom.offsetTop),
    };
    screenProps["dom.offsetLeft"] = {
      desc: "当前元素顶部距离最近父元素左侧的距离,和有没有滚动条没有关系。单位px，只读元素",
      value: getPxValue(dom.offsetLeft),
    };
    screenProps["dom.scrollHeight"] = {
      desc: "html元素的高度,给html元素设置高度会影响此值",
      value: getPxValue(dom.scrollHeight),
    };
    screenProps["dom.scrollWidth"] = {
      desc: "html元素的宽度,给html元素设置宽度会影响此值",
      value: getPxValue(dom.scrollWidth),
    };
    screenProps["dom.scrollTop"] = {
      desc: "2",
      value: getPxValue(dom.scrollTop),
    };
    screenProps["dom.scrollLeft"] = {
      desc: "2",
      value: getPxValue(dom.scrollLeft),
    };
    screenProps["dom.style.height"] = {
      desc: "html元素的高度,给html元素设置高度会影响此值",
      value: dom.style.height,
    };
    screenProps["dom.style.width"] = {
      desc: "html元素的宽度,给html元素设置宽度会影响此值",
      value: dom.style.width,
    };
    screenProps["dom.style.top"] = {
      desc: "2",
      value: dom.style.top,
    };
    screenProps["dom.style.left"] = {
      desc: "2",
      value: dom.style.left,
    };
  }
  return screenProps;
}

window.screenProps = getProps();
console.log(screenProps);
console.log("getProps()");
